package main

import "fmt"

func numDecodings(s string) int {
	// 看了别人的解题思路，发现和小青蛙，跳一层，还是跳两层好像
	// 处理边界条件，如果是0没问题，如果0和前面一位组成的数不在1-26,也就是说不是10,20,就返回0
	// dp[i] = dp[i-1] + dp[i-2], 如果第i位是0 ，dp[i] = dp[i-1] , 如果i-1位是0,dp[i] = dp[i-1]

	dp := make([]int, len(s))

	if s[0] == '0' {
		return 0
	}
	dp[0] = 1
	// dp[1] = 1
	for i := 1; i < len(s); i++ {
		if s[i] == '0' {
			fmt.Println(s[i-1] > '2', string(s[i-1]))
			if s[i-1] <= '2' && s[i-1] != '0' {
				dp[i] = dp[i-1]
			} else {
				return 0
			}

		} else if s[i-1] == '0' {
			dp[i] = dp[i-1]
		} else {
			// if dp[]
			dp[i] = dp[i-1] + dp[i-2]

		}
		fmt.Println("dp=", dp)

	}
	return dp[len(s)-1]
}
func main() {
	fmt.Println(numDecodings("22622"))
}
